package saei.bean;

import javax.persistence.*;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.ForeignKey;
import org.hibernate.annotations.Index;

import saei.bean.parametros.Ciudad;
import saei.bean.parametros.Provincia;

@SuppressWarnings("serial")
@Entity
@Table(name="Codigo_Postal")
public class CodigoPostal extends EntidadPersistente
{
    @Column(name="cpa", unique=true)
    @Index(name="uk_codigopostal")
    private String CPA;
    @ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})
	@Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
    @ForeignKey(name="fk_cp_provincia")
    @JoinColumn(name="id_provincia")
    private Provincia provincia;
    @ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})
	@Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
    @ForeignKey(name="fk_cp_ciudad")
    @JoinColumn(name="id_ciudad")
    private Ciudad ciudad;
    @Column(name="calle")
    private String calle;

    public CodigoPostal() {}

    public CodigoPostal(String CPA){
        this.CPA = CPA;
    }

    public CodigoPostal(String CPA, Provincia provincia, Ciudad ciudad, String calle) {
        this.CPA = CPA;
        this.provincia = provincia;
        this.ciudad = ciudad;
        this.calle = calle;
    }

    public String getCPA() {
        return CPA;
    }

    public Provincia getProvincia() {
        return provincia;
    }

    public Ciudad getCiudad() {
        return ciudad;
    }

    public String getCalle() {
        return calle;
    }

    public void setCalle(String calle) {
        this.calle = calle;
    }

    public String getDireccionNormalizada(int altura){
        return calle +  " " + altura + " (" + CPA + ") - " + ciudad.getDescripcion() + 
                        " (" + provincia.getDescripcion() + ")";
    }
}
